using System;
using System.Collections;
namespace BMC.ARSystem
{
	internal abstract class ARXDataTypeReader
	{
		protected static Hashtable factoryMap;
		internal abstract object ReadValue(string value);
		static ARXDataTypeReader()
		{
			ARXDataTypeReader.factoryMap = new Hashtable();
			ARXDataTypeReader.factoryMap.Add("CHAR", new ARXCharReader());
			ARXDataTypeReader.factoryMap.Add("ATTACH", new ARXAttachmentReader());
			ARXDataTypeReader.factoryMap.Add("TIME", new ARXIntegerReader());
			ARXDataTypeReader.factoryMap.Add("CURRENCY", new ARXCurrencyReader());
			ARXDataTypeReader.factoryMap.Add("DATE", new ARXIntegerReader());
			ARXDataTypeReader.factoryMap.Add("TIMEOFDAY", new ARXIntegerReader());
			ARXDataTypeReader.factoryMap.Add("INTEGER", new ARXIntegerReader());
			ARXDataTypeReader.factoryMap.Add("ENUM", new ARXEnumReader());
			ARXDataTypeReader.factoryMap.Add("REAL", new ARXRealReader());
			ARXDataTypeReader.factoryMap.Add("DECIMAL", new ARXDecimalReader());
			ARXDataTypeReader.factoryMap.Add("DIARY", new ARXDiaryReader());
		}
		internal static ARXDataTypeReader CreateReader(string dataType)
		{
			if (dataType != "U" && !ARXDataTypeReader.factoryMap.ContainsKey(dataType))
			{
				throw new Exception("ARXDataTypeReader not defined for type " + dataType);
			}
			return (ARXDataTypeReader)ARXDataTypeReader.factoryMap.get_Item(dataType);
		}
	}
}
